import {
  // 用于监听
  takeEvery,
  // 用于异步请求
  call,
  // 相当于原生dispatch用于分发
  put,
  // 用于获取当前state
  select
} from 'redux-saga/effects'
import { LOGIN_USER, UPDATE_USER } from '../constants/user'
import { loginUser } from '../actions/userActions'

// 创建并导出generator函数
export function * userSaga () {
  console.log('redux-saga创建成功')
  // !注意这里哦  !!! 这里监听的type  前往不要与分发的type一样  如果一样了 就会一直dispatch 然后一直监听触发
  // !陷入死循环
  yield takeEvery(LOGIN_USER, function * (...aru) {
    const [res] = yield call(loginUser)
    if (res) {
      // !这里分发的type 前往不要和分发的type一样
      yield  put({ type: UPDATE_USER, payload: res.data.data })
    }
    // * 注意 这里的返回值好像是下一个yield的参数, 但是这里使用的是一个函数 应该不一样
    return '登陆成功'
  })
}
